﻿ (function ($) {
    $.fn.preview = function () {
        var xOffset = 30;
        var yOffset = 100;
        var w = $(window).width();
        $(this).each(function () {
            $(this).hover(function (e) {
                if (isPic($(this).attr("src"))) {
                    $("body").append("<div id='preview'><div><img src='" + $(this).attr("src") + "' /><p></p></div></div>");
                } else {
                    $("body").append("<div id='preview'><div><p></p></div></div>");
                }
                $("#preview").css({
                    position: "absolute",
                    padding: "2px",
                    border: "1px solid #f3f3f3",
                    backgroundColor: "#eeeeee",
                    top: (e.pageY + 1000) + "px",
                    zIndex: 1000
                });
                $("#preview > div").css({
                    padding: "3px",
                    backgroundColor: "white",
                    border: "1px solid #cccccc"
                });
                $("#preview > div > p").css({
                    textAlign: "center",
                    fontSize: "12px",
                    padding: "0",
                    margin: "0"
                });
                if (e.pageX < w / 2) {
                    $("#preview").css({
                        left: e.pageX + xOffset + "px",
                        right: "auto"
                    }).fadeIn("fast");
                } else {
                    $("#preview").css("right", (w - e.pageX + xOffset) + "px").css("left", "auto").fadeIn("fast");
                }
            }, function () {
                $("#preview").remove();
            }).mousemove(function (e) {
                var preViewWidth = $("#preview").width();
                yOffset = preViewWidth || yOffset;
                $("#preview").css("top", (e.pageY - yOffset / 3) + "px");
                if (e.pageX < w / 2) {
                    $("#preview").css("left", (e.pageX + xOffset) + "px").css("right", "auto");
                } else {
                    $("#preview").css("right", (w - e.pageX + xOffset) + "px").css("left", "auto");
                }
            });
        });
    };

})(jQuery);

function isPic(filePath) {
    if ((filePath || "") === "")
        return false;
    var imgTypes = [".JPG", ".PNG", ".BMP", ".GIF", ".ICO", ".JPEG", ".PCD", ".PSD", ".TGA"];
    var fileExtend = filePath.substring(filePath.lastIndexOf(".")).toUpperCase();
    if (imgTypes && imgTypes.length > 0) {
        for (var i = 0; i < imgTypes.length; i++) {
            if (imgTypes[i].toUpperCase() === fileExtend) {
                return true;
            }
        }
    }
    return false;
}